class FormOperation {
	constructor(area, formRef) {
		this.area = area;
		this.ctx = area.ctx;
		this.formRef = formRef;
	}
	ref(method, ...args) {
		if (this.formRef.current) {
			return this.formRef.current[method](...args);
		} else {
			return Promise.reject('检测到表单已被移除');
		}
	}
	initResultValues(values) {
		const { staticValues } = this.area.nameManger;
		for (let field in staticValues) {
			if (!Reflect.has(values, field)) {
				values[field] = staticValues[field];
			}
		}
	}
	getFieldValue(name) {
		return this.ref('getFieldValue', name);
	}
	getFieldsValue() {
		const values = this.ref('getFieldsValue');
		this.initResultValues(values);
		return values;
	}
	setFieldsValue(values) {
		return this.ref('setFieldsValue', values);
	}
	setFieldValue(name, value) {
		return this.ref('setFieldValue', name, value);
	}
	async validateFields() {
		try {
			const values = await this.ref('validateFields');
			this.initResultValues(values);
			return values;
		} catch (e) {
			return Promise.reject(e);
		}
	}
	// 重置该表单项，将其值重置为初始值，并移除校验结果
	resetFields() {
		return this.ref('resetFields');
	}
	// 滚动到指定的字段
	scrollToField() {
		return this.ref('scrollToField');
	}
}
export default FormOperation;